import { login, logout, getInfo } from '@/api/login'
import { getToken, setToken, removeToken } from '@/utils/auth'

const manager = {
  state: {
    token: getToken() || '',
    managerId: '',
    name: '',
    avatar: '',
    power: ''
  },

  mutations: {
    SET_TOKEN: (state, token) => {
      state.token = token
    },
    SET_MANAGERID: (state, managerId) => {
      state.managerId = managerId
    },
    SET_NAME(state, name) {
      state.name = name
    },
    SET_AVATAR: (state, avatar) => {
      state.avatar = avatar
    },
    SET_POWER: (state, power) => {
      state.power = power
    }
  },

  actions: {
    // 登录
    Login({ commit }, managerInfo) {
      const managerId = managerInfo.username.trim()
      return login(managerId, managerInfo.password).then((response) => {
        const data = response.data.result
        setToken(data.token)
        commit('SET_TOKEN', data.token)
        commit('SET_MANAGERID', data.managerId)
        commit('SET_POWER', data.power)
        commit('SET_AVATAR', data.avatar)
      })
    },

    // 获取用户信息
    GetInfo({ commit, state }) {
      return getInfo(state.token)
        .then((response) => {
          const data = response.data.result
          commit('SET_POWER', data.power)
          commit('SET_MANAGERID', data.managerId)
          commit('SET_AVATAR', data.avatar)
        })
    },

    // 登出
    LogOut({ commit, state }) {
      return new Promise((resolve, reject) => {
        logout(state.token)
          .then(() => {
            commit('SET_TOKEN', '')
            commit('SET_ROLES', [])
            removeToken()
            resolve()
          })
          .catch((error) => {
            reject(error)
          })
      })
    },

    // 前端 登出
    FedLogOut({ commit }) {
      return new Promise((resolve) => {
        commit('SET_TOKEN', '')
        removeToken()
        resolve()
      })
    }
  }
}

export default manager
